#ifndef MY_PORT_AUDIO_H
#define MY_PORT_AUDIO_H

#include "conf.h"
#include <portaudio.h>

// PortAudioManager 用来管理 Pa_Initialize 和 Pa_Terminate
// PortAudioManager 需要在程序的生命周期内存在，因此需要使用 static 修饰
// e.g. static PortAudioManager pam;
// 利用 static 的生命周期特性来自动管理 portAudio 库的 init 和 deinit
class PortAudioManager{
public:
    PortAudioManager(){
        sys_log("PortAudioManager init start.");
        PaError err = Pa_Initialize();
        if (err != paNoError) {
            err_log("PortAudio init failed: %s", Pa_GetErrorText(err));
        }
        sys_log("PortAudioManager init end.");
    }

    ~PortAudioManager() {
        Pa_Terminate();
    }
};

#endif  // MY_PORT_AUDIO_H
